package cn.com.bluemoon.daps.sync.vo.syncmanage;

import cn.com.bluemoon.daps.common.domain.BmPageRequestVo;
import cn.com.bluemoon.daps.common.enums.SyncStatus;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.Optional;

/**
 * @author Jarod.Kong
 * @date 2021/6/16 21:52
 */
@ApiModel(description = "同步管理分页查询")
@Data
public class SyncManagementPageVo<T> extends BmPageRequestVo<T> {

    @ApiModelProperty("模型Id")
    private String modelId;

    @ApiModelProperty("申请发布单号")
    private String applyPublishOrder;

    @ApiModelProperty("表英文名")
    private String tableName;

    @ApiModelProperty(
            value = "预发布状态： SYNC_WAIT 未同步、 SYNC_DOING 同步中、 SYNC_DONE 已同步、 SYNC_ERROR 同步失败、SYNC_ALL 同步全部 （全字母必须大写）",
            example = "SYNC_ALL")
    private SyncStatus preProdStatus;

    @ApiModelProperty(
            value = "生产状态： SYNC_WAIT 未同步、 SYNC_DOING 同步中、 SYNC_DONE 已同步、 SYNC_ERROR 同步失败、SYNC_ALL 同步全部 （全字母必须大写）",
            example = "SYNC_ALL")
    private SyncStatus prodStatus;

    @ApiModelProperty(value = "DBA介入，null：全部，, true：是，false：否", example = "null")
    private Boolean needDba = null;

    @ApiModelProperty(hidden = true)
    public String getModelIdTrim() {
        return Optional.ofNullable(modelId).map(String::trim).orElse(null);
    }

    @ApiModelProperty(hidden = true)
    public String getTableNameTrimAndLowercase() {
        return Optional.ofNullable(tableName).map(String::trim).map(String::toLowerCase).orElse(null);
    }
}
